package sk.stuba.fiit.npr.sa;

import java.util.*;

/**
 *
 * @author John
 */
public class SA{
    
    ArrayList<String> zasobnik;
            
    void pravidlo(int num){
        
        switch (num){
        
            case 1:
                    this.zasobnik.remove(0);
                    this.zasobnik.add(0, "httpaddress");
                    break;
            case 2:
                    this.zasobnik.remove(0);
                    this.zasobnik.add(0, "ftpaddress");
                    break;
            case 3:
                    this.zasobnik.remove(0);
                    this.zasobnik.add(0, "telnetaddress");
                    break;
            case 4:
                    this.zasobnik.remove(0);
                    this.zasobnik.add(0, "mailtoaddress");
                    break;
            case 5:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "httpaddress2");
                this.zasobnik.add(0, "hostport");
                this.zasobnik.add(0, "\"http://\"");
                break;
            case 6:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "httpaddress3");
                this.zasobnik.add(0, "path");
                this.zasobnik.add(0, "\"/\"");
                break;
            case 7:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "search");
                this.zasobnik.add(0, "\"?\"");
                break;
            case 8:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "&");
                break;
            case 9:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "search");
                this.zasobnik.add(0, "\"?\"");
                break;
            case 10:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "&");
                break;
            case 11:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "path");
                this.zasobnik.add(0, "\"/\"");
                this.zasobnik.add(0, "login");
                this.zasobnik.add(0, "\"ftp://\"");
                break;
            case 12:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "login");
                this.zasobnik.add(0, "\"telnet://\"");
                break;
            case 13:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "hostname");
                this.zasobnik.add(0, "\"@\"");
                this.zasobnik.add(0, "xalphas");
                this.zasobnik.add(0, "\"mailto::\"");
                break;
            case 14:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "login_");
                this.zasobnik.add(0, "xalphas");
                break;
            case 15:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "login2");
                break;
            case 16:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "hostport2");
                break;
            case 17:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "hostport");
                this.zasobnik.add(0, "\"@\"");
            case 18:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "hostport");
                this.zasobnik.add(0, "\"@\"");
                this.zasobnik.add(0, "password");
                this.zasobnik.add(0, "\":\"");
                break;
            case 19:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "hostport2");
                this.zasobnik.add(0, "hostname");
                break;
            case 20:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "port");
                this.zasobnik.add(0, "\":\"");
                break;
            case 21:    
                this.zasobnik.remove(0);
                break;
            case 22:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "hostname2");
                this.zasobnik.add(0, "xalphas");
                break;    
            case 23:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "hostname");
                this.zasobnik.add(0, "\".\"");
                break;
            case 24:
                this.zasobnik.remove(0);
                break;
            case 25:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "digits");
                break;
            case 26:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "path2");
                this.zasobnik.add(0, "segment");
                break;
            case 27:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "path");
                this.zasobnik.add(0, "\"/\"");
                break;
            case 28:
                this.zasobnik.remove(0);
                break;
            case 29:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "search2");
                this.zasobnik.add(0, "xalphas");
                break;
            case 30:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "search");
                this.zasobnik.add(0, "\"+\"");
                break;
            case 31:
                this.zasobnik.remove(0);
                break;
            case 32:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "xalphas");
                break;
            case 33:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "xalphas");
                break;
            case 34:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "segment");
                this.zasobnik.add(0, "xalpha");
                break;
            case 35:
                this.zasobnik.remove(0);
                break;
            case 36:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "xalphas2");
                this.zasobnik.add(0, "xalpha");
                break;
            case 37:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "xalphas");
                break;
            case 38:
                this.zasobnik.remove(0);
                break;
            case 39:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "alpha");
                break;
            case 40:    
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "digit");
                break;
            case 41:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "digits2");
                this.zasobnik.add(0, "digit");
                break;
            case 42:
                this.zasobnik.remove(0);
                this.zasobnik.add(0, "digits");
                break;
            case 43:
                this.zasobnik.remove(0);
                break;
        }
        
        
    }
    
    
    
    
    
   public void process(ArrayList<String> vstup){
            
            boolean chyba = false;
            boolean prijate = false;
            int counter = 0;
            
            this.zasobnik = new ArrayList<>();
            this.zasobnik.add(0, "url");
            
            //while ((!chyba)&&(!prijate)){ 
            while ((!prijate)){
            
            	if (chyba==true){
            		counter++;
            		chyba=false;
            		vstup.remove(0);
            	}
            	if (vstup.isEmpty()) {
//            		System.out.println(this.zasobnik);
            		break;
            	}
            switch (vstup.get(0)){
                
                case "http://":
                    if (this.zasobnik.get(0).equals("url")){
                    this.pravidlo(1);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                    System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        vstup.remove(0);
                        this.zasobnik.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("httpaddress")){
                    this.pravidlo(5);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    System.out.println("Neprijate URL. \"" + vstup.get(0) + "\" nie je v tomto kroku prijimany terminal.");
                    chyba = true;
                    break;
                    
                case "ftp://":
                    if (this.zasobnik.get(0).equals("url")){
                    this.pravidlo(2);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("ftpaddress")){
                    this.pravidlo(11);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    System.out.println("Neprijate URL. \"" + vstup.get(0) + "\" nie je v tomto kroku prijimany terminal.");
                    chyba = true;
                    break;
                    
                case "telnet://":
                    if (this.zasobnik.get(0).equals("url")){
                    this.pravidlo(3);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("telnetaddress")){
                    this.pravidlo(12);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    System.out.println("Neprijate URL. \"" + vstup.get(0) + "\" nie je v tomto kroku prijimany terminal.");
                    chyba = true;
                    break;
                        
                case "mailto::":
                    if (this.zasobnik.get(0).equals("url")){
                    this.pravidlo(4);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("mailtoaddress")){
                    this.pravidlo(13);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    System.out.println("Neprijate URL. \"" + vstup.get(0) + "\" nie je v tomto kroku prijimany terminal.");
                    chyba = true;
                    break;    
                    
                case "/":
                    if (this.zasobnik.get(0).equals("httpaddress2")){
                    this.pravidlo(6);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("login_")){
                    this.pravidlo(16);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("hostport2")){
                    this.pravidlo(21);
                    continue;}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("hostname2")){
                    this.pravidlo(24);
                    continue;}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("path")){
                    this.pravidlo(26);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("path2")){
                    this.pravidlo(27);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("segment")){
                    this.pravidlo(35);
                    continue;}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("xalphas2")){
                    this.pravidlo(38);
                    continue;}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("digits2")){
                    this.pravidlo(43);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    System.out.println("Neprijate URL. \"" + vstup.get(0) + "\" nie je v tomto kroku prijimany terminal.");
                    chyba = true;
                    break;  
                    
                case "?":
                    if (this.zasobnik.get(0).equals("httpaddress2")){
                    this.pravidlo(7);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("httpaddress3")){
                    this.pravidlo(9);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("path")){
                    this.pravidlo(26);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("path2")){
                    this.pravidlo(28);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("segment")){
                    this.pravidlo(35);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    System.out.println("Neprijate URL. \"" + vstup.get(0) + "\" nie je v tomto kroku prijimany terminal.");
                    chyba = true;
                    break; 
                    
                case ":":
                    //System.out.println(this.zasobnik.get(0));
                    if (this.zasobnik.get(0).equals("login_")){
                    this.pravidlo(15);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("login2")){
                    this.pravidlo(18);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("hostport2")){
                    this.pravidlo(20);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("hostname2")){
                    this.pravidlo(24);
                    continue;}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("xalphas2")){
                    this.pravidlo(38);
                    continue;}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    System.out.println("Neprijate URL. \"" + vstup.get(0) + "\" nie je v tomto kroku prijimany terminal.");
                    chyba = true;
                    break; 
                
                case "+":
                    if (this.zasobnik.get(0).equals("search2")){
                    this.pravidlo(30);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("xalphas2")){
                    this.pravidlo(38);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    System.out.println("Neprijate URL. \"" + vstup.get(0) + "\" nie je v tomto kroku prijimany terminal.");
                    chyba = true;
                    break; 
                
                case "@":
                    if (this.zasobnik.get(0).equals("login_")){
                    this.pravidlo(15);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("login2")){
                    this.pravidlo(17);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("xalphas2")){
                    this.pravidlo(38);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    System.out.println("Neprijate URL. \"" + vstup.get(0) + "\" nie je v tomto kroku prijimany terminal.");
                    chyba = true;
                    break;   
                
                case ".":
                    if (this.zasobnik.get(0).equals("login_")){
                    this.pravidlo(16);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("hostname2")){
                    this.pravidlo(23);}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    if (this.zasobnik.get(0).equals("xalphas2")){
                    this.pravidlo(38);
                    continue;}
                    if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                        System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                        this.zasobnik.remove(0);
                        vstup.remove(0);
                        break;
                    }
                    System.out.println("Neprijate URL. \"" + vstup.get(0) + "\" nie je v tomto kroku prijimany terminal.");
                    chyba = true;
                    break; 
                    
                case "$":
                    this.zasobnik.remove(0);
                    if (!this.zasobnik.isEmpty()) this.zasobnik.remove(0);
                    if (!this.zasobnik.isEmpty()){
//                    System.out.println("Neprijate URL. Zasobnik nie je prazdny.");
                    chyba = true;
                    
                    if(counter > 0) {
                    	System.out.println("Neprijate URL.");
                    }
                    counter--;
                    break; 
                    } 
                    	System.out.println("URL bolo prijate.");
                        prijate = true;
                        break;
                    
                    
                    
                    
                default:
                    if (vstup.get(0).matches("\\d")){
                            //System.out.println(this.zasobnik.get(0));
                            if (this.zasobnik.get(0).equals("login")){
                            this.pravidlo(14);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("hostport")){
                            this.pravidlo(19);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("hostname")){
                            this.pravidlo(22);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("port")){
                            this.pravidlo(25);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("path")){
                            this.pravidlo(26);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("search")){
                            this.pravidlo(29);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("user")){
                            this.pravidlo(32);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("password")){
                            this.pravidlo(33);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("segment")){
                            this.pravidlo(34);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("xalphas")){
                            this.pravidlo(36);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("xalphas2")){
                            this.pravidlo(37);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("xalpha")){
                            this.pravidlo(40);}
                            if (this.zasobnik.get(0).equals("digit")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("digits")){
                            this.pravidlo(41);}
                            if (this.zasobnik.get(0).equals("digit")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("digits2")){
                            this.pravidlo(42);
                                    continue;}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            System.out.println("Neprijate URL. \"" + vstup.get(0) + "\" nie je v tomto kroku prijimany terminal.");
                            chyba = true;
                            break; 
                    }
                    if (vstup.get(0).matches("\\w")){
                            if (this.zasobnik.get(0).equals("login")){
                            this.pravidlo(14);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("hostport")){
                            this.pravidlo(19);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("hostname")){
                            this.pravidlo(22);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("path")){
                            this.pravidlo(26);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("search")){
                            this.pravidlo(29);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("user")){
                            this.pravidlo(32);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("password")){
                            this.pravidlo(33);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("segment")){
                            this.pravidlo(34);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("xalphas")){
                            this.pravidlo(36);}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("xalphas2")){
                            this.pravidlo(37);
                            continue;}
                            if (this.zasobnik.get(0).equals("\""+vstup.get(0)+"\"")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            if (this.zasobnik.get(0).equals("xalpha")){
                            this.pravidlo(39);}
                            if (this.zasobnik.get(0).equals("alpha")){
                                System.out.println("Akceptovane: \"" + vstup.get(0) + "\"");
                                this.zasobnik.remove(0);
                                vstup.remove(0);
                                break;
                            }
                            System.out.println("Neprijate URL. \"" + vstup.get(0) + "\" nie je v tomto kroku prijimany terminal.");
                            chyba = true;
                            break; 
                            }
                            System.out.println("Neprijate URL. \"" + vstup.get(0) + "\" nie je v tomto kroku prijimany terminal.");
                            chyba = true;
                            break;
                }
            
        }
        
            System.out.println("Pocet najdenych chyb: " + counter);
    }
    
}
